package com.cabal.auth.service;

import com.cabal.auth.dto.*;
import com.cabal.auth.vo.CabalAuthVo;
import io.swagger.models.auth.In;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

public interface ICabalAuthService {

    List<CabalAuthVo> searchOnlineUserList();

    void downloadUpdateFile(CabalAuthDTO cabalAuthDTO,  HttpServletResponse httpServletResponse);

    String getLatestVersion();

    String receiveClientInfo(CabalClientInfoDTO cabalClientInfoDTO);

    String updateAccountPassword(UpdateAccountPasswordDTO updateAccountPasswordDTO, String ipAddress);

    void updateAbnormalAccount();

    Map<String, String> getFileMd5Value();

    String updateLoginState(CabalClientInfoDTO cabalClientInfoDTO);

    void updateOnlineUserCash();

    List<CabalRankInfoDTO> searchRankInfoList(CabalAuthDTO cabalAuthDTO);

    CabalMallAuthDTO getAccountInfo(String userNum, String authKey, HttpServletRequest request);

    /**
     * 根据userNum查询角色列表
     *
     * @param account
     * @return
     */
    List<CabalCharacterInfoDTO> searchCharacterList(String account);

    /**
     * 根据角色ID赋予称号
     *
     * @param characterIdx
     * @param titleId
     * @return
     */
    String setTitleByCharacterIdx(String characterIdx, Integer titleId);

    /**
     * 全面解封账号
     *
     * @param account
     * @return
     */
    String unsealAccount(String account);

    /**
     * 封禁账号
     *
     * @param account
     * @return
     */
    String banAccount(String account, String externalCheatsProcessName);

    /**
     * 变更国家
     *
     * @param cabalUpdateNationDTO
     * @return
     */
    String updateNation(CabalUpdateNationDTO cabalUpdateNationDTO);

    /**
     * 在线用户检查
     */
    void onlineCharacterCheck();

    /**
     * 更新网关配置
     *
     * @param updateGatewayConfigDTO
     * @return
     */
    String updateGatewayConfig(UpdateGatewayConfigDTO updateGatewayConfigDTO);

    UpdateGatewayConfigDTO getUpdateGatewayConfigDTO();

    /**
     * 查询元宝背包数据
     *
     * @param account
     * @return
     */
    List<CabalCashBackPackDTO> searchCashBackPackList(String account);

    /**
     * 去掉元宝背包未使用物品期限值
     *
     * @param account
     * @return
     */
    String updateCashBackPackDurationIdx(String account);

    /**
     * 删除角色
     *
     * @param characterIdx
     * @return
     */
    String delCharacter(Integer characterIdx);

    String clearCashRecord(String account);

    /**
     * 设置VIP等级
     *
     * @param account
     * @param vipLevel
     * @return
     */
    String updateVipLevel(String account, Integer vipLevel);

    /**
     * 账号控制定时器
     */
    void cabalAuthControl();

    /**
     * 获取VIP特效状态值
     *
     * @param characterIdValue
     * @return
     */
    String getVipSpecialEffectsStatus(String characterIdValue);

    /**
     * 更新VIP特效状态值
     *
     * @param characterIdValue
     * @return
     */
    String updateVipSpecialEffectsStatus(String characterIdValue);
}
